#include<iostream>
#include<unistd.h>
#include<cstring>
#include<signal.h>
using namespace std;

void showBlock(sigset_t *oset)
{
    int signo = 1;
    for(; signo <=31; signo++)
    {
        if(sigismember(oset, signo)) cout << "1";
        else cout << "0";
    }
    cout << endl;
}

void block()
{
    //在用户层面上进行设置
    sigset_t set,oset;
    //将信号集初始化，置空
    sigemptyset(&set);
    sigemptyset(&oset);
    sigaddset(&set,2);//将2号信号加入set

    //设置进进程
    sigprocmask(SIG_SETMASK, &set, &oset); 
    int cnt = 0;
    while(true)
    {
        showBlock(&oset);
        sleep(1);
        cnt++;

        if(cnt == 10)
        {
            cout << "recover block" << endl;
            sigprocmask(SIG_SETMASK, &oset, &set);
            showBlock(&set); 
        }
    }

}
int main()
{
    signal(2,SIG_IGN);//忽略该信号
    signal(2,SIG_DFL);//默认方法递达
}